import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pdzs_app/controllers/controllers.dart';

/// 请求处理拦截器
class RequestInterceptor extends Interceptor {
  final TokenController tokenController = Get.find();
  @override
  onRequest(options, handler) {
    debugPrint(
        '================\n*** Request *** \nData:\n ${options.data.toString()} \nQuery:\n ${options.queryParameters.toString()} \n======================');
    final listPath = [
      "/login/login",
      "/login/huoqugonggao",
      "/sendMsgCode",
      "/api/qq/vip"
    ];
    if (listPath.contains(options.path)) {
      return handler.next(options);
    }

    options.headers['token'] = tokenController.token;
    // ignore: unrelated_type_equality_checks

    if (options.data.runtimeType.toString() == "FormData") {
      options.headers.addAll({'content-type': 'multipart/form-data'});
    }
    debugPrint('请求头：=>${options.headers}');
    handler.next(options);
    //return super.onRequest(options);
  }

  @override
  onResponse(response, handler) {
    debugPrint('======================\n*** Response *** \n$response');
    // // 关闭loading窗
    // print(response.data['code']);
    // var data = jsonDecode(response.data);
    // // // print(data['msg']);
    // if (data['code'] == 0) {
    //   // ignore: deprecated_member_use
    //   Get.snackbar('提示', data['msg']);
    //   return super.onResponse(response, handler);
    // } else {
    // handler.next(response);
    // }
    // if (response.data != null &&
    //     response.data is Map &&
    //     response.data['code'] == '0') {
    //   // 这个条件也是根据自己情况加的
    //   ///    Alert.hide();请求成功后关闭loading窗

    //   // 登录请求
    //   if (response.requestOptions.path == 'api/auth/login') {
    //     // 缓存cookie
    //     var cookie = response.headers['set-cookie'];
    //     //   SpUtil.putStringList('cookie', cookie!);缓存cookie
    //   }
    //   handler.next(response);
    //   //     return super.onResponse(response);
    // } else if (response.requestOptions.path ==
    //         'api/auth/login' && // 登录登录成功, 但没有默认就诊人// 缓存cookie以便后续创建默认就诊人（需求）
    //     response.data != null &&
    //     response.data is Map &&
    //     response.data['code'] == '11') {
    //   // 缓存cookie
    //   var cookie = response.headers['set-cookie'];
    //   //    SpUtil.putStringList('cookie', cookie!);

    //   //     Alert.hide();
    //   handler.next(response);
    // } else {
    //   // handler.reject(DioError(
    //   //     requestOptions: response.requestOptions,
    //   //     error: response.data != null &&
    //   //             response.data is Map &&
    //   //             response.data['msg'] != null &&
    //   //             response.data['msg'].length > 0
    //   //         ? response.data['msg']
    //   //         : '未知错误',
    //   //     response: response));
    // }
    handler.next(response);
  }

  @override
  onError(err, handler) {
    // Alert.hide();关闭弹窗

    // 账户登录异常
    if (err.response != null &&
        err.response?.data != null &&
        err.response?.data is Map &&
        err.response?.data != null &&
        err.response?.data['code'] == '2') {
      // Alert.showAlert(
      //   message: err.message ?? '未知错误',
      //   showCancel: false,
      //   onConfirm: () {
      //     // 清除账号缓存
      //     SpUtil.putString("account_phone", '');
      //     SpUtil.putString("account_password", '');
      //     SpUtil.putObject("account", '');
      //
      //     // 退出到登录页面
      //     //  push(Routes.login, replace: true, clearStack: true);
      //   },
      // );
    } else {
      //    Alert.showAlert(message: err.message ?? '未知错误', showCancel: false);//在页面显示一个错误弹窗
    }
  }
}
